Global インストールした npm パッケージに PATH を通す方法
こんにちは、CX事業本部 Delivery部の若槻です。
今回は、Global インストールした npm パッケージに PATH を通す方法を確認してみました。
はじめに結論
次のコマンドを実行すれば PATH を通すことができました。
export PATH=$PATH:`npm prefix --location=global`/bin
.zshrc
に記述する場合は次のように実行します。
echo "export PATH=$PATH:`npm prefix --location=global`/bin" >> ~/.zshrc
環境
M1 MacBook ローカル環境で確認をしました。
$ node --version v16.16.0 $ npm --version 8.11.0 $ sw_vers ProductName: macOS ProductVersion: 12.6 BuildVersion: 21G115
解説
npm の実行可能ファイルが配置される場所は npm bin
コマンドで確認可能です。
$ npm bin -g npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead. /Users/wakatsuki.ryuta/.npm-global/bin
Global インストールされるパッケージの実体が配置される場所は {prefix}/lib/node_modules
ですが、実行可能ファイル(bin files)は {prefix}/bin
にリンクされます。
Operates in "global" mode, so that packages are installed into the prefix folder instead of the current working directory. See folders for more on the differences in behavior.
- packages are installed into the {prefix}/lib/node_modules folder, instead of the current working directory.
- bin files are linked to {prefix}/bin
{prefix}
の場所は npm prefix
または npm config list
コマンドで確認可能です。
$ npm prefix --location=global /Users/wakatsuki.ryuta/.npm-global $ npm config list --location=global ; "user" config from /Users/wakatsuki.ryuta/.npmrc prefix = "/Users/wakatsuki.ryuta/.npm-global" ; "cli" config from command line options location = "global" ; node bin location = /usr/local/bin/node ; node version = v16.16.0 ; npm local prefix = /Users/wakatsuki.ryuta/projects/cm-rwakatsuki/flutter_sample_app ; npm version = 8.11.0 ; cwd = /Users/wakatsuki.ryuta/projects/cm-rwakatsuki/flutter_sample_app ; HOME = /Users/wakatsuki.ryuta ; Run `npm config ls -l` to show all defaults.
既定では {prefix}
は $HOME/.npm-global
となります。
よって冒頭で示した次のコマンドを実行すれば、PATH に {prefix}/bin
が追加されて Global インストールされた npm パッケージが実行可能となります。
export PATH=$PATH:`npm prefix --location=global`/bin
ちなみに npm bin
コマンドの実行結果を PATH に通しても同様のことができますが、デメリットとして実行時に PATH がまだ通っていない場合は WARNING が出力されてしまいます。
$ export PATH=$PATH:`npm bin --location=global` npm ERR! bin (not in PATH env variable)
そのため ~/.zshrc
などに上記コマンドを記述すると、ターミナル起動のたびに WARNING が出力されるのが少し煩わしくなります。なので前述の npm prefix
コマンドを使う方法の方がオススメです。
参考
以上